import * as Core from '@alicloud/pop-core';
// import { ConfigOptions } from '@alicloud/pop-core';

// 语音通知配置接口
export interface VoiceConfig {
  accessKeyId: string;
  accessKeySecret: string;
  endpoint?: string;
  apiVersion?: string;
}

// 语音通知参数接口
export interface SingleCallByTtsParams {
  CalledNumber: string;
  // CalledShowNumber: string;
  TtsCode: string;
  TtsParam?: string;
  PlayTimes?: number;
  Volume?: number;
  Speed?: number;
  OutId?: string;
}

export class VoiceCaller {
  private client: Core;
  private config: VoiceConfig;

  constructor(config: VoiceConfig) {
    this.config = {
      endpoint: 'https://dyvmsapi.aliyuncs.com',
      apiVersion: '2017-05-25',
      ...config,
    };

    // 初始化阿里云语音服务客户端
    this.client = new Core({
      accessKeyId: this.config.accessKeyId,
      accessKeySecret: this.config.accessKeySecret,
      endpoint: this.config.endpoint,
      apiVersion: this.config.apiVersion,
    });
  }

  /**
   * 发送语音通知
   * @param params 语音通知参数
   */
  async sendVoiceCall(params: SingleCallByTtsParams): Promise<any> {
    try {
      const requestOption = {
        method: 'POST',
      };

      // 调用阿里云语音API发送语音通知
      const result = await this.client.request(
        'SingleCallByTts',
        params,
        requestOption,
      );
      console.log(`语音通知发送结果: ${JSON.stringify(result)}`);
      return result;
    } catch (error) {
      console.error('语音通知发送失败:', error);
      throw error;
    }
  }
}

// 使用示例
// async function example() {
//   // 配置阿里云AccessKey信息
//   const config: VoiceConfig = {
//     accessKeyId: '你的AccessKeyId',
//     accessKeySecret: '你的AccessKeySecret'
//   };

//   // 创建语音通知实例
//   const voiceCaller = new VoiceCaller(config);

//   try {
//     // 发送验证码语音通知
//     const result = await voiceCaller.sendVerificationCodeVoice(
//       '13800138000', // 接收语音通知的手机号码
//       '4001234567', // 显示的主叫号码（需要在阿里云申请）
//       'TTS_123456789', // 语音模板ID
//       '123456', // 验证码
//       2 // 播放次数
//     );

//     console.log('语音通知发送成功:', result);
//   } catch (error) {
//     console.error('语音通知发送失败:', error);
//   }
// }

// 运行示例
// example();
